package moocloudstudio.minder.service;

import moocloudstudio.minder.entity.MinderMap;

import java.util.List;

public interface MapService {
    /**
     * 根据思维导图id查询思维导图信息,如果逻辑删除则无法查到
     * @param mapId 思维导图id
     * @return 思维导图信息
     */
    MinderMap findAndCheckById(String mapId);
    /**
     * 新建或修改
     * @param map 思维导图信息
     * @return 更新后的思维导图信息
     */
    MinderMap save(MinderMap map);

    /**
     * 查找用户的思维导图，如果被逻辑删除则无法查到
     * @param userId 用户id
     * @return 思维导图列表
     */
    List<MinderMap> list(String userId);

    /**
     * 逻辑删除指定的思维导图
     * @param mapId 思维导图id
     */
    void logicDeleteById(String mapId);

    /**
     * 删除指定的思维导图
     * @param mapId 思维导图id
     */
    void deleteById(String mapId);

    /**
     * 根据分享信息查询查询思维导图
     * @param shareId 分享id
     * @return 思维导图
     */
    MinderMap getAndCheckMapByShareId(String shareId);

    /**
     * 开启或关闭分享链接
     * @param shareId 分享id
     * @param shared 是否开启分享
     * @param updateBy 创建人
     * @return 思维导图
     */
    MinderMap updateShared(String shareId, Boolean shared, String updateBy);
}
